package repository

import (
	"boy-go/modules/system/model"
	"boy-go/pkg/db"
	"gorm.io/gorm"
)

type SysRoleMenuRepository struct {
	DB *gorm.DB
}

func NewSysRoleMenuRepository() *SysRoleMenuRepository {
	return &SysRoleMenuRepository{
		DB: db.GetMasterDB(),
	}
}
func (r *SysRoleMenuRepository) GetById(roleId int64, menuId int64) (*model.SysRoleMenu, error) {
	db := r.DB
	m := &model.SysRoleMenu{}
	err := db.Model(&model.SysRoleMenu{}).Where("role_id = ?", roleId).Where("menu_id = ?", menuId).First(m).Error
	if err != nil {
		return nil, err
	}
	return m, nil
}

// Save 添加
func (r *SysRoleMenuRepository) Save(m *model.SysRoleMenu) error {
	return r.DB.Model(&model.SysRoleMenu{}).Create(m).Error
}

// Update 更新
func (r *SysRoleMenuRepository) Update(m *model.SysRoleMenu) error {
	return r.DB.Model(&model.SysRoleMenu{}).Where("role_id = ?", m.RoleId).Where("menu_id = ?", m.MenuId).Updates(m).Error
}

// Delete 删除
func (r *SysRoleMenuRepository) Delete(roleId int64, menuId int64) error {
	return r.DB.Model(&model.SysRoleMenu{}).Where("role_id = ?", roleId).Where("menu_id = ?", menuId).Delete(&model.SysRoleMenu{}).Error
}

// DeleteBatch 批量删除
func (r *SysRoleMenuRepository) BatchDelete(ids [][]string) error {
	db := r.DB
	db = db.Where("(role_id, menu_id) IN ?", ids)
	return db.Delete(&model.SysRoleMenu{}).Error
}
